package com.chaoxing.listener;


import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.chaoxing.entity.Course;
import com.chaoxing.mapper.CourseMapper;
import com.chaoxing.mapper.UserMapper;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;



/** 解析监听器，
 * 每解析一行会回调invoke()方法。
 * 整个excel解析结束会执行doAfterAllAnalysed()方法
 */
@Slf4j
public class ExcelListener extends AnalysisEventListener {

    private final CourseMapper courseMapper;

    //解析出来的每一行数据可以存入一个list中
    private List<Object> datas = new ArrayList<Object>();

    public ExcelListener(CourseMapper courseMapper) {
        this.courseMapper = courseMapper;
    }


    @Override
    public void invoke(Object object, AnalysisContext context) {
        log.info("当前行："+context.getCurrentRowNum());
        log.info(object.toString());
        datas.add(object);//数据存储到list，供批量处理，或后续自己业务逻辑处理。
        insert(object);//根据自己业务做处理
    }
    //将上传的类型做强制转换
    private void insert(Object object) {
        Course course = (Course) object;
        courseMapper.insert(course);
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // datas.clear();//解析结束销毁不用的资源
    }
    public List<Object> getDatas() {
        return datas;
    }
    public void setDatas(List<Object> datas) {
        this.datas = datas;
    }
}